/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import dao.RoomDAO;
import dao.RoomTypeDAO;
import dto.RoomDTO;
import dto.RoomTypeDTO;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author aptech
 */
public class ServletController extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        /* TODO output your page here. You may use following sample code. */
        String action = request.getParameter("action") == null ? "" : request.getParameter("action");
        ArrayList<RoomDTO> listR;
        RoomDAO rDao;
        String forward = "index.jsp";
        if (action.equalsIgnoreCase("category")) {
            String id = request.getParameter("id") == null ? "" : request.getParameter("id");
            String mode = request.getParameter("mode") == null ? "list" : request.getParameter("mode");
            RoomTypeDAO rtDao = new RoomTypeDAO();
            ArrayList<RoomTypeDTO> listS = rtDao.realAll();

            request.getServletContext().setAttribute("listS", listS);
            if (mode.equals("detail")) {
                if (id != "") {
                    int rID = Integer.parseInt(id);
                    RoomTypeDTO rt = rtDao.readByID(rID);
                    request.getServletContext().setAttribute("category", rt);

                }
            }
            forward = "category.jsp";
        } else if (action.equalsIgnoreCase("room")) {
            String id = request.getParameter("id") == null ? "" : request.getParameter("id");
            String mode = request.getParameter("mode") == null ? "" : request.getParameter("mode");
            if (id != "" && mode != "") {
                int rID = Integer.parseInt(id);
                rDao = new RoomDAO();
                if (mode.toLowerCase().equals("intype")) {
                    listR = rDao.readByTypeID(rID);
                    request.getServletContext().setAttribute("listR", listR);
                    forward = "ServletController?action=room&mode=list";
                } else if (mode.toLowerCase().equals("detail")) {
                    RoomDTO rt = rDao.readByID(rID);
                    request.getServletContext().setAttribute("room", rt);
                } else if (mode.toLowerCase().equals("intype")) {

                    forward = "room.jsp";
                }
                request.getServletContext().setAttribute("mode", mode);
            }

        } else if (action.equalsIgnoreCase("createroom")) {

            String r = request.getParameter("result").toString();
            if (r.equals("pending")) {
                forward = "CreateRoom";
            } else if (r.equals("success")) {
                forward = "index.jsp";
            } else if (r.equals("fail")) {
                response.setStatus(404);
                response.sendError(404);
            }
        } else if (action.equalsIgnoreCase("createroom")) {
            forward = "action/room/CreateRoomAction";
        }
        RequestDispatcher req = request.getRequestDispatcher(forward);
        req.forward(request, response);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    public static void main(String[] args) {
    }
}
